home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / hplip / base / maint.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  35.2 KB  |  1,419 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. from g import *
  5. from codes import *
  6. import status
  7. import pml
  8. from prnt import pcl, ldl, colorcal
  9.  
  10. def AlignType1(dev, loadpaper_ui):
  11.     ok = loadpaper_ui()
  12.     if ok:
  13.         dev.writeEmbeddedPML(pml.OID_AUTO_ALIGNMENT, pml.AUTO_ALIGNMENT, style = 0, direct = True)
  14.         dev.closePrint()
  15.     
  16.     return ok
  17.  
  18.  
  19. def AlignType1PML(dev, loadpaper_ui):
  20.     ok = loadpaper_ui()
  21.     if ok:
  22.         dev.setPML(pml.OID_AUTO_ALIGNMENT, pml.AUTO_ALIGNMENT)
  23.         dev.closePML()
  24.     
  25.     return ok
  26.  
  27.  
  28. def AlignType2(dev, loadpaper_ui, align_ui, bothpens_ui):
  29.     (state, a, b, c, d) = (0, 6, 6, 3, 3)
  30.     ok = False
  31.     while state != -1:
  32.         if state == 0:
  33.             state = 1
  34.             pens = dev.getStatusFromDeviceID()['agents']
  35.             pen_types = [ pens[x] for x in range(len(pens)) ]
  36.             if AGENT_TYPE_NONE in pen_types:
  37.                 log.error('Cannot perform alignment with 0 or 1 pen installed.')
  38.                 state = 100
  39.             
  40.         AGENT_TYPE_NONE in pen_types
  41.         if state == 1:
  42.             state = -1
  43.             ok = loadpaper_ui()
  44.             if ok:
  45.                 state = 2
  46.             
  47.         ok
  48.         if state == 2:
  49.             state = -1
  50.             alignType2Phase1(dev)
  51.             (ok, a) = align_ui('A', 'h', 'kc', 2, 11)
  52.             if ok:
  53.                 state = 3
  54.             
  55.         ok
  56.         if state == 3:
  57.             state = -1
  58.             (ok, b) = align_ui('B', 'v', 'kc', 2, 11)
  59.             if ok:
  60.                 state = 4
  61.             
  62.         ok
  63.         if state == 4:
  64.             state = -1
  65.             (ok, c) = align_ui('C', 'v', 'kc', 2, 5)
  66.             if ok:
  67.                 state = 5
  68.             
  69.         ok
  70.         if state == 5:
  71.             state = -1
  72.             (ok, d) = align_ui('D', 'v', 'c', 2, 5)
  73.             if ok:
  74.                 state = 6
  75.             
  76.         ok
  77.         if state == 6:
  78.             ok = loadpaper_ui()
  79.             state = -1
  80.             continue
  81.         None if ok else []
  82.         if state == 100:
  83.             ok = False
  84.             bothpens_ui()
  85.             state = -1
  86.             continue
  87.     return ok
  88.  
  89.  
  90. def AlignType3(dev, loadpaper_ui, align_ui, paperedge_ui, align_type):
  91.     (state, a, b, c, d, zca) = (0, 6, 6, 3, 3, 6)
  92.     ok = False
  93.     while state != -1:
  94.         if state == 0:
  95.             state = -1
  96.             ok = loadpaper_ui()
  97.             if ok:
  98.                 alignType3Phase1(dev)
  99.                 state = 1
  100.             
  101.         ok
  102.         if state == 1:
  103.             state = -1
  104.             (ok, a) = align_ui('A', 'h', 'kc', 2, 11)
  105.             if ok:
  106.                 state = 2
  107.             
  108.         ok
  109.         if state == 2:
  110.             state = -1
  111.             (ok, b) = align_ui('B', 'v', 'kc', 2, 11)
  112.             if ok:
  113.                 state = 3
  114.             
  115.         ok
  116.         if state == 3:
  117.             state = -1
  118.             (ok, c) = align_ui('C', 'v', 'k', 2, 11)
  119.             if ok:
  120.                 state = 4
  121.             
  122.         ok
  123.         if state == 4:
  124.             state = -1
  125.             (ok, d) = align_ui('D', 'v', 'kc', 2, 11)
  126.             if ok:
  127.                 state = 5
  128.             
  129.         ok
  130.         if state == 5:
  131.             state = -1
  132.             alignType3Phase2(dev, a, b, c, d)
  133.         None if align_type == 9 else ok
  134.         if state == 6:
  135.             state = -1
  136.             alignType3Phase3(dev)
  137.             (ok, zca) = paperedge_ui(13)
  138.             if ok:
  139.                 state = 7
  140.             
  141.         ok
  142.         if state == 7:
  143.             ok = loadpaper_ui()
  144.             if ok:
  145.                 alignType3Phase4(dev, zca)
  146.             
  147.             state = -1
  148.             continue
  149.     return ok
  150.  
  151.  
  152. def AlignxBow(dev, align_type, loadpaper_ui, align_ui, paperedge_ui, invalidpen_ui, coloradj_ui):
  153.     (state, statepos) = (0, 0)
  154.     user_cancel_states = [
  155.         1000,
  156.         -1]
  157.     (a, b, c, d, e, f, g) = (0, 0, 0, 0, 0, 0, 0)
  158.     error_states = [
  159.         -1]
  160.     ok = False
  161.     dev.pen_config = status.getPenConfiguration(dev.getStatusFromDeviceID())
  162.     if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
  163.         state = 100
  164.         states = [
  165.             -1]
  166.     elif dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
  167.         state = 0
  168.         states = [
  169.             2,
  170.             200,
  171.             3,
  172.             -1]
  173.     elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
  174.         state = 0
  175.         states = [
  176.             2,
  177.             200,
  178.             3,
  179.             -1]
  180.     elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
  181.         state = 0
  182.         states = [
  183.             2,
  184.             300,
  185.             3,
  186.             -1]
  187.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  188.         state = 0
  189.         states = [
  190.             2,
  191.             400,
  192.             500,
  193.             600,
  194.             700,
  195.             3,
  196.             4,
  197.             -1]
  198.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
  199.         state = 0
  200.         states = [
  201.             2,
  202.             400,
  203.             500,
  204.             600,
  205.             700,
  206.             800,
  207.             900,
  208.             3,
  209.             4,
  210.             -1]
  211.     
  212.     while state != -1:
  213.         if state == 0:
  214.             ok = loadpaper_ui()
  215.             if ok:
  216.                 if align_type == 4:
  217.                     alignType4Phase1(dev)
  218.                 elif align_type == 5:
  219.                     alignType5Phase1(dev)
  220.                 elif align_type == 7:
  221.                     alignType7Phase1(dev)
  222.                 else:
  223.                     statepos = 0
  224.                     states = error_states
  225.             else:
  226.                 statepos = 0
  227.                 states = user_cancel_states
  228.         elif state == 2:
  229.             (ok, a) = paperedge_ui(13)
  230.             if not ok:
  231.                 statepos = 0
  232.                 states = user_cancel_states
  233.             
  234.         elif state == 3:
  235.             if align_type == 4:
  236.                 alignType4Phase2(dev, a, b, c, d, e)
  237.             elif align_type == 5:
  238.                 alignType5Phase2(dev, a, b, c, d, e, f, g)
  239.             else:
  240.                 alignType7Phase2(dev, a, b, c, d, e, f, g)
  241.         elif state == 4:
  242.             ok = loadpaper_ui()
  243.             if ok:
  244.                 if align_type == 4:
  245.                     alignType4Phase3(dev)
  246.                 elif align_type == 5:
  247.                     alignType5Phase3(dev)
  248.                 else:
  249.                     alignType7Phase3(dev)
  250.             else:
  251.                 statepos = 0
  252.                 states = user_cancel_states
  253.         elif state == 100:
  254.             invalidpen_ui()
  255.             state = -1
  256.         elif state == 200:
  257.             (ok, b) = align_ui('B', 'v', 'k', 2, 11)
  258.             if not ok:
  259.                 statepos = 0
  260.                 states = user_cancel_states
  261.             
  262.         elif state == 300:
  263.             (ok, b) = align_ui('B', 'v', 'kc', 2, 11)
  264.             if not ok:
  265.                 statepos = 0
  266.                 states = user_cancel_states
  267.             
  268.         elif state == 400:
  269.             (ok, b) = align_ui('B', 'h', 'kc', 2, 17)
  270.             if not ok:
  271.                 statepos = 0
  272.                 states = user_cancel_states
  273.             
  274.         elif state == 500:
  275.             (ok, c) = align_ui('C', 'v', 'kc', 2, 17)
  276.             if not ok:
  277.                 statepos = 0
  278.                 states = user_cancel_states
  279.             
  280.         elif state == 600:
  281.             (ok, d) = align_ui('D', 'v', 'k', 2, 11)
  282.             if not ok:
  283.                 statepos = 0
  284.                 states = user_cancel_states
  285.             
  286.         elif state == 700:
  287.             (ok, e) = align_ui('E', 'v', 'kc', 2, 11)
  288.             if not ok:
  289.                 statepos = 0
  290.                 states = user_cancel_states
  291.             
  292.         elif state == 800:
  293.             (ok, f) = coloradj_ui('F', 21)
  294.             if not ok:
  295.                 statepos = 0
  296.                 states = user_cancel_states
  297.             
  298.         elif state == 900:
  299.             (ok, f) = coloradj_ui('G', 21)
  300.             if not ok:
  301.                 statepos = 0
  302.                 states = user_cancel_states
  303.             
  304.         elif state == 1000:
  305.             ok = False
  306.             log.warning('Alignment canceled at user request.')
  307.         
  308.         state = states[statepos]
  309.         statepos += 1
  310.     return ok
  311.  
  312.  
  313. def AlignType6(dev, ui1, ui2, loadpaper_ui):
  314.     state = 0
  315.     ok = False
  316.     while state != -1:
  317.         if state == 0:
  318.             state = 2
  319.             accept = ui1()
  320.             if not accept:
  321.                 state = 1
  322.             
  323.         accept
  324.         if state == 1:
  325.             state = -1
  326.             ok = loadpaper_ui()
  327.             if ok:
  328.                 alignType6Phase1(dev)
  329.                 state = 2
  330.             
  331.         ok
  332.         if state == 2:
  333.             ui2()
  334.             state = -1
  335.             continue
  336.     return ok
  337.  
  338.  
  339. def AlignType8(dev, loadpaper_ui, align_ui):
  340.     (state, a, b, c, d) = (0, 5, 5, 5, 5)
  341.     ok = False
  342.     while state != -1:
  343.         if state == 0:
  344.             state = -1
  345.             ok = loadpaper_ui()
  346.             if ok:
  347.                 num_inks = alignType8Phase1(dev)
  348.                 state = 1
  349.             
  350.         ok
  351.         if state == 1:
  352.             state = -1
  353.             (ok, a) = align_ui('A', 'v', 'k', 3, 9)
  354.             if ok:
  355.                 state = 2
  356.             
  357.         ok
  358.         if state == 2:
  359.             state = -1
  360.             (ok, b) = align_ui('B', 'v', 'c', 3, 9)
  361.             if ok:
  362.                 state = 3
  363.             
  364.         ok
  365.         if state == 3:
  366.             state = -1
  367.             (ok, c) = align_ui('C', 'v', 'kc', 3, 9)
  368.             if ok:
  369.                 state = 4
  370.             
  371.         ok
  372.         if state == 4:
  373.             state = -1
  374.             (ok, d) = align_ui('D', 'h', 'kc', 3, 9)
  375.             if ok:
  376.                 state = 5
  377.             
  378.         ok
  379.         if state == 5:
  380.             alignType8Phase2(dev, num_inks, a, b, c, d)
  381.             state = -1
  382.             continue
  383.     return ok
  384.  
  385.  
  386. def AlignType10(dev, loadpaper_ui, align_ui):
  387.     pattern = alignType10SetPattern(dev)
  388.     state = 0
  389.     while state != -1:
  390.         if state == 0:
  391.             state = -1
  392.             ok = loadpaper_ui()
  393.             if ok:
  394.                 alignType10Phase1(dev)
  395.                 state = 1
  396.             
  397.         ok
  398.         if state == 1:
  399.             values = align_ui(pattern, ALIGN_TYPE_LBOW)
  400.             log.debug(values)
  401.             alignType10Phase2(dev, values, pattern)
  402.             state = 2
  403.             continue
  404.         if state == 2:
  405.             state = -1
  406.             ok = loadpaper_ui()
  407.             if ok:
  408.                 alignType10Phase3(dev)
  409.             
  410.         ok
  411.  
  412.  
  413. def alignType10SetPattern(dev):
  414.     pattern = None
  415.     pen_config = status.getPenConfiguration(dev.getStatusFromDeviceID())
  416.     log.debug('Pen config=%d' % pen_config)
  417.     if pen_config == AGENT_CONFIG_BLACK_ONLY:
  418.         pattern = 1
  419.     elif pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  420.         pattern = 2
  421.     elif pen_config in (AGENT_CONFIG_COLOR_AND_PHOTO, AGENT_CONFIG_COLOR_AND_GREY):
  422.         pattern = 3
  423.     
  424.     log.debug('Pattern=%d' % pattern)
  425.     return pattern
  426.  
  427.  
  428. def alignType10Phase1(dev):
  429.     dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_ALIGNMENT_PAGE)
  430.     dev.closePrint()
  431.  
  432.  
  433. def alignType10Phase2(dev, values, pattern):
  434.     i = 0
  435.     p = ''.join([
  436.         pcl.UEL,
  437.         '\n'])
  438.     for x in values:
  439.         i += 1
  440.         if not x:
  441.             break
  442.         
  443.         p = ''.join([
  444.             p,
  445.             pcl.ESC,
  446.             '*o5W\x1a',
  447.             chr(i),
  448.             '\x00',
  449.             chr(pattern),
  450.             chr(x),
  451.             '\n'])
  452.     
  453.     p = ''.join([
  454.         p,
  455.         pcl.UEL])
  456.     dev.printData(p)
  457.     dev.closePrint()
  458.  
  459.  
  460. def alignType10Phase3(dev):
  461.     dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_ALIGNMENT_PAGE_VERIFICATION)
  462.     dev.closePrint()
  463.  
  464.  
  465. def align10and11Controls(pattern, align_type):
  466.     if align_type == ALIGN_TYPE_LIDIL_0_5_4:
  467.         if pattern == 1:
  468.             controls = {
  469.                 'A': (True, 23),
  470.                 'B': (True, 9),
  471.                 'C': (True, 9),
  472.                 'D': (False, 0),
  473.                 'E': (False, 0),
  474.                 'F': (False, 0),
  475.                 'G': (False, 0),
  476.                 'H': (False, 0) }
  477.         elif pattern == 2:
  478.             controls = {
  479.                 'A': (True, 17),
  480.                 'B': (True, 23),
  481.                 'C': (True, 23),
  482.                 'D': (True, 23),
  483.                 'E': (True, 9),
  484.                 'F': (True, 9),
  485.                 'G': (True, 9),
  486.                 'H': (True, 9) }
  487.         elif pattern == 3:
  488.             controls = {
  489.                 'A': (True, 9),
  490.                 'B': (True, 23),
  491.                 'C': (True, 23),
  492.                 'D': (True, 23),
  493.                 'E': (True, 9),
  494.                 'F': (True, 9),
  495.                 'G': (True, 9),
  496.                 'H': (True, 9) }
  497.         
  498.     elif pattern == 1:
  499.         controls = {
  500.             'A': (True, 23),
  501.             'B': (True, 9),
  502.             'C': (True, 9),
  503.             'D': (False, 0),
  504.             'E': (False, 0),
  505.             'F': (False, 0),
  506.             'G': (False, 0),
  507.             'H': (False, 0) }
  508.     elif pattern == 2:
  509.         controls = {
  510.             'A': (True, 23),
  511.             'B': (True, 17),
  512.             'C': (True, 23),
  513.             'D': (True, 23),
  514.             'E': (True, 9),
  515.             'F': (True, 9),
  516.             'G': (True, 9),
  517.             'H': (True, 9) }
  518.     elif pattern == 3:
  519.         controls = {
  520.             'A': (True, 23),
  521.             'B': (True, 9),
  522.             'C': (True, 23),
  523.             'D': (True, 23),
  524.             'E': (True, 9),
  525.             'F': (True, 9),
  526.             'G': (True, 9),
  527.             'H': (True, 9) }
  528.     
  529.     return controls
  530.  
  531.  
  532. def AlignType11(dev, loadpaper_ui, align_ui, invalidpen_ui):
  533.     pattern = alignType11SetPattern(dev)
  534.     if pattern is None:
  535.         invalidpen_ui()
  536.         return None
  537.     state = 0
  538.     while state != -1:
  539.         if state == 0:
  540.             state = -1
  541.             ok = loadpaper_ui()
  542.             if ok:
  543.                 alignType11Phase1(dev)
  544.                 state = 1
  545.             
  546.         ok
  547.         if state == 1:
  548.             values = align_ui(pattern, ALIGN_TYPE_LIDIL_0_5_4)
  549.             log.debug(values)
  550.             alignType11Phase2(dev, values, pattern, dev.pen_config)
  551.             state = 2
  552.             continue
  553.         pattern is None
  554.         if state == 2:
  555.             state = -1
  556.             ok = loadpaper_ui()
  557.             if ok:
  558.                 alignType11Phase3(dev)
  559.             
  560.         ok
  561.  
  562.  
  563. def alignType11SetPattern(dev):
  564.     pattern = None
  565.     dev.pen_config = status.getPenConfiguration(dev.getStatusFromDeviceID())
  566.     log.debug('Pen config=%d' % dev.pen_config)
  567.     if dev.pen_config in (AGENT_CONFIG_BLACK_ONLY, AGENT_CONFIG_COLOR_ONLY):
  568.         pattern = 1
  569.     
  570.     if dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  571.         pattern = 2
  572.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
  573.         pattern = 3
  574.     elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
  575.         return None
  576.     log.debug('Pattern=%d' % pattern)
  577.     return pattern
  578.  
  579.  
  580. def alignType11Phase1(dev):
  581.     dev.printData(ldl.buildResetPacket())
  582.     dev.printData(ldl.buildReportPagePacket(ldl.COMMAND_REPORT_PAGE_PEN_CALIBRATION))
  583.     dev.closePrint()
  584.  
  585.  
  586. def alignType11Phase2(dev, values, pattern, pen_config):
  587.     active_colors = 0
  588.     if pen_config == AGENT_CONFIG_BLACK_ONLY:
  589.         active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_K
  590.         values = values[:3]
  591.     elif pen_config == AGENT_CONFIG_COLOR_ONLY:
  592.         active_colors = COMMAND_SET_PEN_ALIGNMENT_3_COLOR
  593.         values = values[:3]
  594.     elif pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  595.         active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_K | ldl.COMMAND_SET_PEN_ALIGNMENT_3_COLOR
  596.     elif pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
  597.         active_colors = ldl.COMMAND_SET_PEN_ALIGNMENT_3_COLOR | ldl.COMMAND_SET_PEN_ALIGNMENT_3_PHOTO
  598.     
  599.     log.debug('Active colors=0x%x Values=%s' % (active_colors, values))
  600.     dev.printData(ldl.buildSetPenAlignment3Packet(active_colors, values))
  601.     dev.closePrint()
  602.  
  603.  
  604. def AlignType13(dev, loadpaper_ui, scanner_align_load_ui):
  605.     ok = loadpaper_ui()
  606.     if ok:
  607.         alignType13Phase1(dev)
  608.         ok = scanner_align_load_ui()
  609.     
  610.     return ok
  611.  
  612.  
  613. def alignType13Phase1(dev):
  614.     dev.setPML(pml.OID_AUTO_ALIGNMENT, pml.AUTO_ALIGNMENT)
  615.     dev.closePML()
  616.  
  617.  
  618. def alignType11Phase3(dev):
  619.     dev.printData(ldl.buildResetPacket())
  620.     dev.printData(ldl.buildReportPagePacket(ldl.COMMAND_REPORT_PAGE_PEN_CALIBRATION_VERIFY))
  621.     dev.closePrint()
  622.  
  623.  
  624. def alignType2Phase1(dev):
  625.     dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, 0)
  626.     dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, 0)
  627.     dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, 0)
  628.     dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, 0)
  629.     dev.closePrint()
  630.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align1_8xx.pcl.gz'))
  631.  
  632.  
  633. def alignType2Phase2(dev, a, b, c, d):
  634.     dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, (a - 6) * 12)
  635.     dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, (b - 6) * 12)
  636.     dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, (c - 3) * 12)
  637.     dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, (d - 3) * 12)
  638.     dev.writeEmbeddedPML(pml.OID_MARKING_AGENTS_INITIALIZED, 3)
  639.     dev.closePrint()
  640.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align2_8xx.pcl.gz'))
  641.  
  642.  
  643. def alignType3Phase1(dev):
  644.     dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, 0)
  645.     dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, 0)
  646.     dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, 0)
  647.     dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, 0)
  648.     dev.closePrint()
  649.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align1_9xx.pcl.gz'))
  650.  
  651.  
  652. def alignType3Phase2(dev, a, b, c, d):
  653.     dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, (a - 6) * 12)
  654.     dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, (6 - b) * 12)
  655.     dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, (6 - c) * 12)
  656.     dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, (6 - d) * 6)
  657.     dev.closePrint()
  658.  
  659.  
  660. def alignType3Phase3(dev):
  661.     dev.closePrint()
  662.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align3_9xx.pcl.gz'))
  663.  
  664.  
  665. def alignType3Phase4(dev, zca):
  666.     dev.writeEmbeddedPML(pml.OID_MARKING_AGENTS_INITIALIZED, 3)
  667.     dev.closePrint()
  668.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'align2_9xx.pcl.gz'))
  669.  
  670.  
  671. def alignType4Phase1(dev):
  672.     dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_RESUME_NORMAL_OPERATION))
  673.     if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
  674.         return None
  675.     if dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
  676.         ldl_file = 'cbbcal.ldl.gz'
  677.     elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
  678.         ldl_file = 'cbccal.ldl.gz'
  679.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  680.         ldl_file = 'cb2pcal.ldl.gz'
  681.     
  682.     dev.printData(ldl.buildSetPrinterAlignmentPacket(0, 0, 0, 0))
  683.     dev.closePrint()
  684.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', ldl_file))
  685.  
  686.  
  687. def alignType4Phase2(dev, a, b, c, d, e):
  688.     log.debug('A=%d, B=%d, C=%d, D=%d, E=%d' % (a, b, c, d, e))
  689.     if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
  690.         return None
  691.     zca = (7 - a) * -48
  692.     dev.printData(ldl.buildZCAPacket(zca))
  693.     if dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
  694.         k_bidi = (6 - b) * 2
  695.         dev.printData(ldl.buildSetPrinterAlignmentPacket(k_bidi, 0, 0, 0))
  696.     elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
  697.         cmy_bidi = (6 - b) * 2
  698.         dev.printData(ldl.buildSetPrinterAlignmentPacket(0, 0, 0, cmy_bidi))
  699.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  700.         vert = (9 - b) * 2
  701.         hort = (9 - c) * -2
  702.         k_bidi = (6 - d) * 2
  703.         cmy_bidi = (6 - e) * 2
  704.         dev.printData(ldl.buildSetPrinterAlignmentPacket(k_bidi, hort, vert, cmy_bidi))
  705.     
  706.     dev.printData(ldl.buildSetPensAlignedPacket())
  707.     dev.closePrint()
  708.  
  709.  
  710. def alignType4Phase3(dev):
  711.     if dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  712.         dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', 'cb2pcal_done.ldl.gz'))
  713.     
  714.  
  715.  
  716. def alignType5Phase1(dev):
  717.     dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_RESUME_NORMAL_OPERATION))
  718.     if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
  719.         return None
  720.     if dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
  721.         ldl_file = 'cbbcal.ldl.gz'
  722.     elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
  723.         ldl_file = 'cbpcal.ldl.gz'
  724.     elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
  725.         ldl_file = 'cbccal.ldl.gz'
  726.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  727.         ldl_file = 'cb2pcal.ldl.gz'
  728.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
  729.         ldl_file = 'cbcpcal.ldl.gz'
  730.     
  731.     dev.printData(ldl.buildZCAPacket(0))
  732.     dev.printData(ldl.buildColorHortPacket(0))
  733.     dev.printData(ldl.buildColorVertPacket(0))
  734.     dev.printData(ldl.buildBlackVertPacket(0))
  735.     dev.printData(ldl.buildBlackHortPacket(0))
  736.     dev.printData(ldl.buildBlackBidiPacket(0))
  737.     dev.printData(ldl.buildColorBidiPacket(0))
  738.     dev.printData(ldl.buildPhotoHuePacket(0))
  739.     dev.printData(ldl.buildColorHuePacket(0))
  740.     dev.closePrint()
  741.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', ldl_file))
  742.  
  743.  
  744. def alignType5Phase2(dev, a, b, c, d, e, f, g):
  745.     log.debug('A=%d, B=%d, C=%d, D=%d, E=%d, F=%d, G=%d' % (a, b, c, d, e, f, g))
  746.     if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
  747.         return None
  748.     zca = (7 - a) * -48
  749.     dev.printData(ldl.buildZCAPacket(zca))
  750.     if dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
  751.         k_bidi = (6 - b) * 2
  752.         dev.printData(ldl.buildBlackBidiPacket(k_bidi))
  753.     elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
  754.         kcm_bidi = (6 - b) * 2
  755.         dev.printData(ldl.buildPhotoBidiPacket(kcm_bidi))
  756.     elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
  757.         cmy_bidi = (6 - b) * 2
  758.         dev.printData(ldl.buildColorBidiPacket(cmy_bidi))
  759.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  760.         vert = (9 - b) * 2
  761.         hort = (9 - c) * -2
  762.         k_bidi = (6 - d) * 2
  763.         cmy_bidi = (6 - e) * 2
  764.         dev.printData(ldl.buildColorHortPacket(0))
  765.         dev.printData(ldl.buildColorVertPacket(0))
  766.         dev.printData(ldl.buildBlackVertPacket(vert))
  767.         dev.printData(ldl.buildBlackHortPacket(hort))
  768.         dev.printData(ldl.buildBlackBidiPacket(k_bidi))
  769.         dev.printData(ldl.buildColorBidiPacket(cmy_bidi))
  770.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
  771.         vert = (9 - b) * 2
  772.         hort = (9 - c) * -2
  773.         cmy_bidi = (6 - d) * 2
  774.         kcm_bidi = (6 - e) * 2
  775.         photo_adj = colorcal.PHOTO_ALIGN_TABLE[f][g]
  776.         color_adj = colorcal.COLOR_ALIGN_TABLE[f][g]
  777.         dev.printData(ldl.buildPhotoHortPacket(hort))
  778.         dev.printData(ldl.buildPhotoVertPacket(vert))
  779.         dev.printData(ldl.buildColorHortPacket(0))
  780.         dev.printData(ldl.buildColorVertPacket(0))
  781.         dev.printData(ldl.buildPhotoBidiPacket(kcm_bidi))
  782.         dev.printData(ldl.buildColorBidiPacket(cmy_bidi))
  783.         dev.printData(ldl.buildPhotoHuePacket(photo_adj))
  784.         dev.printData(ldl.buildColorHuePacket(color_adj))
  785.     
  786.     dev.printData(ldl.buildSetPensAlignedPacket())
  787.     dev.closePrint()
  788.  
  789.  
  790. def alignType5Phase3(dev):
  791.     dev.closePrint()
  792.     if dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  793.         dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', 'cb2pcal_done.ldl.gz'))
  794.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
  795.         dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ldl', 'cbccal_done.ldl.gz'))
  796.     
  797.  
  798.  
  799. def alignType6Phase1(dev):
  800.     dev.printData(ldl.buildPrintInternalPagePacket())
  801.     dev.closePrint()
  802.  
  803.  
  804. def alignType7Phase1(dev):
  805.     dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, 0)
  806.     dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, 0)
  807.     dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, 0)
  808.     dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, 0)
  809.     dev.writeEmbeddedPML(pml.OID_AGENT3_VERTICAL_ALIGNMENT, 0)
  810.     dev.writeEmbeddedPML(pml.OID_AGENT3_HORIZONTAL_ALIGNMENT, 0)
  811.     dev.writeEmbeddedPML(pml.OID_AGENT3_BIDIR_ADJUSTMENT, 0)
  812.     dev.writeEmbeddedPML(pml.OID_ZCA, 0)
  813.     if dev.pen_config in (AGENT_CONFIG_NONE, AGENT_CONFIG_INVALID):
  814.         return None
  815.     if dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
  816.         pcl_file = 'crbcal.pcl.gz'
  817.     elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
  818.         pcl_file = 'crpcal.pcl.gz'
  819.     elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
  820.         pcl_file = 'crccal.pcl.gz'
  821.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  822.         pcl_file = 'crcbcal.pcl.gz'
  823.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
  824.         pcl_file = 'crcpcal.pcl.gz'
  825.     
  826.     dev.closePrint()
  827.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', pcl_file))
  828.  
  829.  
  830. def alignType7Phase2(dev, a, b, c, d, e, f, g):
  831.     log.debug('A=%d, B=%d, C=%d, D=%d, E=%d, F=%d, G=%d' % (a, b, c, d, e, f, g))
  832.     zca = (7 - a) * -12
  833.     dev.writeEmbeddedPML(pml.OID_ZCA, zca)
  834.     if dev.pen_config == AGENT_CONFIG_BLACK_ONLY:
  835.         k_bidi = (6 - b) * 6
  836.         dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, k_bidi)
  837.     elif dev.pen_config == AGENT_CONFIG_PHOTO_ONLY:
  838.         kcm_bidi = (6 - b) * 6
  839.         dev.writeEmbeddedPML(pml.OID_AGENT3_BIDIR_ADJUSTMENT, kcm_bidi)
  840.     elif dev.pen_config == AGENT_CONFIG_COLOR_ONLY:
  841.         cmy_bidi = (6 - b) * 6
  842.         dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, cmy_bidi)
  843.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_BLACK:
  844.         vert = (9 - b) * 6
  845.         hort = (9 - c) * -6
  846.         k_bidi = (6 - d) * 6
  847.         cmy_bidi = (6 - e) * 6
  848.         dev.writeEmbeddedPML(pml.OID_AGENT1_BIDIR_ADJUSTMENT, k_bidi)
  849.         dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, cmy_bidi)
  850.         dev.writeEmbeddedPML(pml.OID_AGENT2_HORIZONTAL_ALIGNMENT, hort)
  851.         dev.writeEmbeddedPML(pml.OID_AGENT2_VERTICAL_ALIGNMENT, vert)
  852.     elif dev.pen_config == AGENT_CONFIG_COLOR_AND_PHOTO:
  853.         vert = (9 - b) * 6
  854.         hort = (9 - c) * -6
  855.         cmy_bidi = (6 - d) * 6
  856.         kcm_bidi = (6 - e) * 6
  857.         photo_adj = colorcal.PHOTO_ALIGN_TABLE[f][g]
  858.         color_adj = colorcal.COLOR_ALIGN_TABLE[f][g]
  859.         x = (color_adj << 8) + photo_adj
  860.         dev.writeEmbeddedPML(pml.OID_COLOR_CALIBRATION_SELECTION, x)
  861.         dev.writeEmbeddedPML(pml.OID_AGENT2_BIDIR_ADJUSTMENT, cmy_bidi)
  862.         dev.writeEmbeddedPML(pml.OID_AGENT3_BIDIR_ADJUSTMENT, kcm_bidi)
  863.         dev.writeEmbeddedPML(pml.OID_AGENT3_HORIZONTAL_ALIGNMENT, hort)
  864.         dev.writeEmbeddedPML(pml.OID_AGENT3_VERTICAL_ALIGNMENT, vert)
  865.     
  866.     dev.closePrint()
  867.  
  868.  
  869. def alignType7Phase3(dev):
  870.     dev.closePrint()
  871.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'crcaldone.pcl.gz'))
  872.  
  873.  
  874. def alignType8Phase1(dev):
  875.     pens = dev.getStatusFromDeviceID()['agents']
  876.     pen_types = [ pens[x]['type'] for x in range(len(pens)) ]
  877.     dev.closePrint()
  878.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', f))
  879.     return num_inks
  880.  
  881.  
  882. def alignType8Phase2(dev, num_inks, a, b, c, d):
  883.     align_values1 = {
  884.         1: '\x00\x00\x18',
  885.         2: '\x00\x00\x12',
  886.         3: '\x00\x00\x0c',
  887.         4: '\x00\x00\x06',
  888.         5: '\x00\x00\x00',
  889.         6: '\x01\x00\x06',
  890.         7: '\x01\x00\x0c',
  891.         8: '\x01\x00\x12',
  892.         9: '\x01\x00\x18' }
  893.     align_values2 = {
  894.         1: '\x00\x00\x12',
  895.         2: '\x00\x00\x0c',
  896.         3: '\x00\x00\x06',
  897.         4: '\x00\x00\x00',
  898.         5: '\x01\x00\x06',
  899.         6: '\x01\x00\x0c',
  900.         7: '\x01\x00\x12',
  901.         8: '\x01\x00\x18',
  902.         9: '\x01\x00\x1e' }
  903.     align_values3 = {
  904.         1: '\x00\x00$',
  905.         2: '\x00\x00\x18',
  906.         3: '\x00\x00\x12',
  907.         4: '\x00\x00\x06',
  908.         5: '\x00\x00\x00',
  909.         6: '\x01\x00\x06',
  910.         7: '\x01\x00\x12',
  911.         8: '\x01\x00\x18',
  912.         9: '\x01\x00$' }
  913.     if num_inks == 4:
  914.         s = ''.join([
  915.             pcl.UEL,
  916.             '@PJL ENTER LANGUAGE=PCL3GUI\n',
  917.             pcl.RESET,
  918.             pcl.ESC,
  919.             '*o5W\x1a\x01',
  920.             align_values1[a],
  921.             pcl.ESC,
  922.             '*o5W\x1a\x02',
  923.             align_values2[a],
  924.             pcl.ESC,
  925.             '*o5W\x1a\x03',
  926.             align_values1[b],
  927.             pcl.ESC,
  928.             '*o5W\x1a\x04',
  929.             align_values1[b],
  930.             pcl.ESC,
  931.             '*o5W\x1a\x08',
  932.             align_values1[c],
  933.             pcl.ESC,
  934.             '*o5W\x1a\x07',
  935.             align_values1[d],
  936.             pcl.RESET,
  937.             pcl.UEL])
  938.     else:
  939.         s = ''.join([
  940.             pcl.UEL,
  941.             '@PJL ENTER LANGUAGE=PCL3GUI\n',
  942.             pcl.RESET,
  943.             pcl.ESC,
  944.             '*o5W\x1a\x05',
  945.             align_values1[a],
  946.             pcl.ESC,
  947.             '*o5W\x1a\x06',
  948.             align_values3[a],
  949.             pcl.ESC,
  950.             '*o5W\x1a\x03',
  951.             align_values1[b],
  952.             pcl.ESC,
  953.             '*o5W\x1a\x04',
  954.             align_values1[b],
  955.             pcl.ESC,
  956.             '*o5W\x1a\n',
  957.             align_values1[c],
  958.             pcl.ESC,
  959.             '*o5W\x1a\t',
  960.             align_values1[d],
  961.             pcl.RESET,
  962.             pcl.UEL])
  963.     dev.printData(s)
  964.     dev.closePrint()
  965.  
  966.  
  967. def AlignType12(dev, loadpaper_ui):
  968.     if loadpaper_ui():
  969.         dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_ALIGNMENT_PAGE)
  970.         dev.closePML()
  971.     
  972.  
  973.  
  974. def cleaning(dev, clean_type, level1, level2, level3, loadpaper_ui, dlg1, dlg2, dlg3, wait_ui):
  975.     state = 0
  976.     while state != -1:
  977.         if state == 0:
  978.             state = 1
  979.             if clean_type == CLEAN_TYPE_PCL_WITH_PRINTOUT:
  980.                 ok = loadpaper_ui()
  981.                 if not ok:
  982.                     state = -1
  983.                 
  984.             
  985.         clean_type == CLEAN_TYPE_PCL_WITH_PRINTOUT
  986.         if state == 1:
  987.             level1(dev)
  988.             state = 2
  989.             continue
  990.         if state == 2:
  991.             state = -1
  992.             ok = loadpaper_ui()
  993.             if ok:
  994.                 state = 3
  995.             
  996.         ok
  997.         if state == 3:
  998.             state = 4
  999.             print_clean_test_page(dev)
  1000.             continue
  1001.         if state == 4:
  1002.             state = -1
  1003.             ok = dlg1()
  1004.             if ok:
  1005.                 state = 5
  1006.             
  1007.         ok
  1008.         if state == 5:
  1009.             level2(dev)
  1010.             state = 6
  1011.             continue
  1012.         if state == 6:
  1013.             state = -1
  1014.             ok = loadpaper_ui()
  1015.             if ok:
  1016.                 state = 7
  1017.             
  1018.         ok
  1019.         if state == 7:
  1020.             state = 8
  1021.             print_clean_test_page(dev)
  1022.             continue
  1023.         if state == 8:
  1024.             state = -1
  1025.             ok = dlg2()
  1026.             if ok:
  1027.                 state = 9
  1028.             
  1029.         ok
  1030.         if state == 9:
  1031.             level3(dev)
  1032.             state = 10
  1033.             continue
  1034.         if state == 10:
  1035.             state = -1
  1036.             ok = loadpaper_ui()
  1037.             if ok:
  1038.                 state = 11
  1039.             
  1040.         ok
  1041.         if state == 11:
  1042.             state = 12
  1043.             print_clean_test_page(dev)
  1044.             continue
  1045.         if state == 12:
  1046.             state = -1
  1047.             dlg3()
  1048.             continue
  1049.     return ok
  1050.  
  1051.  
  1052. def print_clean_test_page(dev):
  1053.     dev.closePrint()
  1054.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'ps', 'clean_page.pdf.gz'), raw = False)
  1055.  
  1056.  
  1057. def cleanType1(dev):
  1058.     dev.writeEmbeddedPML(pml.OID_CLEAN, pml.CLEAN_CLEAN)
  1059.     dev.closePrint()
  1060.  
  1061.  
  1062. def primeType1(dev):
  1063.     dev.writeEmbeddedPML(pml.OID_CLEAN, pml.CLEAN_PRIME)
  1064.     dev.closePrint()
  1065.  
  1066.  
  1067. def wipeAndSpitType1(dev):
  1068.     dev.writeEmbeddedPML(pml.OID_CLEAN, pml.CLEAN_WIPE_AND_SPIT)
  1069.     dev.closePrint()
  1070.  
  1071.  
  1072. def cleanType2(dev):
  1073.     dev.printData(ldl.buildResetPacket())
  1074.     dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_COMMAND, ldl.COMMAND_HANDLE_PEN, ldl.COMMAND_HANDLE_PEN_CLEAN_LEVEL1))
  1075.     dev.closePrint()
  1076.  
  1077.  
  1078. def primeType2(dev):
  1079.     dev.printData(ldl.buildResetPacket())
  1080.     dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_COMMAND, ldl.COMMAND_HANDLE_PEN, ldl.COMMAND_HANDLE_PEN_CLEAN_LEVEL2))
  1081.     dev.closePrint()
  1082.  
  1083.  
  1084. def wipeAndSpitType2(dev):
  1085.     dev.printData(ldl.buildResetPacket())
  1086.     dev.printData(ldl.buildLIDILPacket(ldl.PACKET_TYPE_COMMAND, ldl.COMMAND_HANDLE_PEN, ldl.COMMAND_HANDLE_PEN_CLEAN_LEVEL3))
  1087.     dev.closePrint()
  1088.  
  1089.  
  1090. def colorCalType1(dev, loadpaper_ui, colorcal_ui, photopenreq_ui):
  1091.     (value, state) = (4, 0)
  1092.     ok = False
  1093.     while state != -1:
  1094.         if state == 0:
  1095.             if colorCalType1PenCheck(dev):
  1096.                 state = 1
  1097.             else:
  1098.                 state = 100
  1099.         colorCalType1PenCheck(dev)
  1100.         if state == 1:
  1101.             state = -1
  1102.             ok = loadpaper_ui()
  1103.             if ok:
  1104.                 colorCalType1Phase1(dev)
  1105.                 state = 2
  1106.             
  1107.         ok
  1108.         if state == 2:
  1109.             state = -1
  1110.             (ok, value) = colorcal_ui()
  1111.             if ok:
  1112.                 state = 3
  1113.             
  1114.         ok
  1115.         if state == 3:
  1116.             colorCalType1Phase2(dev, value)
  1117.             state = -1
  1118.             continue
  1119.         if state == 100:
  1120.             ok = False
  1121.             photopenreq_ui()
  1122.             state = -1
  1123.             continue
  1124.     return ok
  1125.  
  1126.  
  1127. def colorCalType1PenCheck(dev):
  1128.     pens = dev.getStatusFromDeviceID()['agents']
  1129.     pen_types = [ pens[x]['type'] for x in range(len(pens)) ]
  1130.     if AGENT_TYPE_KCM in pen_types:
  1131.         return True
  1132.     log.error('Cannot perform color calibration with no photo pen installed.')
  1133.     return False
  1134.  
  1135.  
  1136. def colorCalType1Phase1(dev):
  1137.     dev.closePrint()
  1138.     dev.printGzipFile(os.path.join(prop.home_dir, 'data', 'pcl', 'colorcal1_450.pcl.gz'))
  1139.  
  1140.  
  1141. def colorCalType1Phase2(dev, value):
  1142.     color_cal = {
  1143.         1: ('\x0f<', '\x17\x0c'),
  1144.         2: ('\x10\xcc', '\x15|'),
  1145.         3: ('\x12\\', '\x13\xec'),
  1146.         4: ('\x13\xec', '\x12\\'),
  1147.         5: ('\x15|', '\x10\xcc'),
  1148.         6: ('\x17\x0c', '\x0f<'),
  1149.         7: ('\x18\x9c', '\r\xac') }
  1150.     s = ''.join([
  1151.         pcl.UEL,
  1152.         '@PJL ENTER LANGUAGE=PCL3GUI\n',
  1153.         pcl.RESET,
  1154.         pcl.ESC,
  1155.         '*o5W\x1a\x0c\x00',
  1156.         color_cal[value][0],
  1157.         pcl.ESC,
  1158.         '*o5W\x1a\x0b\x00',
  1159.         color_cal[value][1],
  1160.         pcl.RESET,
  1161.         pcl.UEL])
  1162.     dev.printData(s)
  1163.     dev.closePrint()
  1164.  
  1165.  
  1166. def colorCalType2(dev, loadpaper_ui, colorcal_ui, photopenreq_ui):
  1167.     (value, state) = (4, 0)
  1168.     ok = True
  1169.     while state != -1:
  1170.         if state == 0:
  1171.             if colorCalType2PenCheck(dev):
  1172.                 state = 1
  1173.             else:
  1174.                 state = 100
  1175.         colorCalType2PenCheck(dev)
  1176.         if state == 1:
  1177.             state = -1
  1178.             ok = loadpaper_ui()
  1179.             if ok:
  1180.                 colorCalType2Phase1(dev)
  1181.                 state = 2
  1182.             
  1183.         ok
  1184.         if state == 2:
  1185.             state = -1
  1186.             (ok, value) = colorcal_ui()
  1187.             if ok:
  1188.                 state = 3
  1189.             
  1190.         ok
  1191.         if state == 3:
  1192.             colorCalType2Phase2(dev, value)
  1193.             state = -1
  1194.             continue
  1195.         if state == 100:
  1196.             photopenreq_ui()
  1197.             ok = False
  1198.             state = -1
  1199.             continue
  1200.     return ok
  1201.  
  1202.  
  1203. def colorCalType2PenCheck(dev):
  1204.     pens = dev.getStatusFromDeviceID()['agents']
  1205.     pen_types = [ pens[x]['type'] for x in range(len(pens)) ]
  1206.     if AGENT_TYPE_NONE not in pen_types:
  1207.         return True
  1208.     log.error('Cannot perform color calibration with pens missing.')
  1209.     return False
  1210.  
  1211.  
  1212. def colorCalType2Phase1(dev):
  1213.     dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_COLOR_CAL)
  1214.     dev.closePrint()
  1215.  
  1216.  
  1217. def colorCalType2Phase2(dev, value):
  1218.     c = colorcal.COLOR_CAL_TABLE
  1219.     p = ''.join([
  1220.         '\x1b&b19WPML \x04\x00\x06\x01\x04\x01\x05\x01\t\x08\x04',
  1221.         chr(c[value * 4] + 100),
  1222.         chr(c[value * 4 + 1] + 100),
  1223.         chr(c[value * 4 + 2] + 100),
  1224.         chr(c[value * 4 + 3] + 100),
  1225.         '\x1b%-12345X'])
  1226.     dev.printData(p)
  1227.     dev.closePrint()
  1228.  
  1229.  
  1230. def colorCalType3(dev, loadpaper_ui, colorcal_ui, photopenreq_ui):
  1231.     (value, state) = (4, 0)
  1232.     ok = True
  1233.     while state != -1:
  1234.         if state == 0:
  1235.             if colorCalType3PenCheck(dev):
  1236.                 state = 1
  1237.             else:
  1238.                 state = 100
  1239.         colorCalType3PenCheck(dev)
  1240.         if state == 1:
  1241.             state = -1
  1242.             ok = loadpaper_ui()
  1243.             if ok:
  1244.                 colorCalType3Phase1(dev)
  1245.                 state = 2
  1246.             
  1247.         ok
  1248.         if state == 2:
  1249.             state = -1
  1250.             (ok, valueA) = colorcal_ui('A', 21)
  1251.             if ok:
  1252.                 state = 3
  1253.             
  1254.         ok
  1255.         if state == 3:
  1256.             state = -1
  1257.             (ok, valueB) = colorcal_ui('B', 21)
  1258.             if ok:
  1259.                 state = 4
  1260.             
  1261.         ok
  1262.         if state == 4:
  1263.             colorCalType3Phase2(dev, valueA, valueB)
  1264.             state = -1
  1265.             continue
  1266.         if state == 100:
  1267.             photopenreq_ui()
  1268.             ok = False
  1269.             state = -1
  1270.             continue
  1271.     return ok
  1272.  
  1273.  
  1274. def colorCalType3PenCheck(dev):
  1275.     pens = dev.getStatusFromDeviceID()['agents']
  1276.     pen_types = [ pens[x]['type'] for x in range(len(pens)) ]
  1277.     if AGENT_TYPE_KCM in pen_types or AGENT_TYPE_BLUE in pen_types:
  1278.         return True
  1279.     log.error('Cannot perform color calibration with no photo (or photo blue) pen installed.')
  1280.     return False
  1281.  
  1282.  
  1283. def colorCalType3Phase1(dev):
  1284.     dev.writeEmbeddedPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_COLOR_CAL)
  1285.     dev.closePrint()
  1286.  
  1287.  
  1288. def colorCalType3Phase2(dev, A, B):
  1289.     photo_adj = colorcal.PHOTO_ALIGN_TABLE[A - 1][B - 1]
  1290.     color_adj = colorcal.COLOR_ALIGN_TABLE[A - 1][B - 1]
  1291.     adj_value = (color_adj << 0x8L) + photo_adj
  1292.     dev.writeEmbeddedPML(pml.OID_COLOR_CALIBRATION_SELECTION, adj_value)
  1293.     dev.closePrint()
  1294.  
  1295.  
  1296. def colorCalType4(dev, loadpaper_ui, colorcal_ui, wait_ui):
  1297.     state = 0
  1298.     ok = True
  1299.     while state != -1:
  1300.         if state == 0:
  1301.             state = -1
  1302.             ok = loadpaper_ui()
  1303.             if ok:
  1304.                 colorCalType4Phase1(dev)
  1305.                 state = 2
  1306.             
  1307.         ok
  1308.         if state == 2:
  1309.             state = -1
  1310.             (ok, values) = colorcal_ui()
  1311.             if ok:
  1312.                 state = 3
  1313.             
  1314.         ok
  1315.         if state == 3:
  1316.             colorCalType4Phase2(dev, values)
  1317.             state = 4
  1318.             continue
  1319.         if state == 4:
  1320.             state = -1
  1321.             ok = loadpaper_ui()
  1322.             if ok:
  1323.                 colorCalType4Phase3(dev)
  1324.                 state = -1
  1325.             
  1326.         ok
  1327.     return ok
  1328.  
  1329.  
  1330. def colorCalType4Phase1(dev):
  1331.     dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_COLOR_CAL)
  1332.     dev.closePML()
  1333.  
  1334.  
  1335. def colorCalType4AdjValue(value):
  1336.     if value >= 100:
  1337.         return 200
  1338.     return value + 100
  1339.  
  1340.  
  1341. def colorCalType4Phase2(dev, values):
  1342.     if -1 in values:
  1343.         (Cadj, Madj, Yadj, cadj, madj, kadj) = (244, 244, 244, 244, 244, 244)
  1344.     else:
  1345.         (sel1, sel2, sel3, sel4) = values
  1346.         tmp1 = colorcal.TYPE_4_C_TABLE[sel1][sel2]
  1347.         tmp2 = colorcal.TYPE_4_LC_TABLE[sel3][sel4]
  1348.         Cadj = colorCalType4AdjValue(tmp1)
  1349.         cadj = colorCalType4AdjValue(tmp1 + tmp2)
  1350.         tmp1 = colorcal.TYPE_4_M_TABLE[sel1][sel2]
  1351.         tmp2 = colorcal.TYPE_4_LM_TABLE[sel3][sel4]
  1352.         Madj = colorCalType4AdjValue(tmp1)
  1353.         madj = colorCalType4AdjValue(tmp1 + tmp2)
  1354.         Yadj = colorCalType4AdjValue(colorcal.TYPE_4_Y_TABLE[sel1][sel2])
  1355.         kadj = colorCalType4AdjValue(0)
  1356.     log.debug('C=%d, M=%d, Y=%d, c=%d, m=%d, k=%d\n' % (Cadj, Madj, Yadj, cadj, madj, kadj))
  1357.     dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_1, kadj)
  1358.     dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_2, Cadj)
  1359.     dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_3, Madj)
  1360.     dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_4, Yadj)
  1361.     dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_5, cadj)
  1362.     dev.setPML(pml.OID_COLOR_CALIBRATION_ARRAY_6, madj)
  1363.     dev.closePML()
  1364.  
  1365.  
  1366. def colorCalType4Phase3(dev):
  1367.     dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_COLOR_PALETTE_CMYK_PAGE)
  1368.     dev.closePML()
  1369.  
  1370.  
  1371. def colorCalType5(dev, loadpaper_ui):
  1372.     if loadpaper_ui():
  1373.         dev.printData('\x1b%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n\x1bE\x1b%Puifp.multi_button_push 20;\nudw.quit;\x1b*rC\x1bE\x1b%-12345X')
  1374.         dev.closePrint()
  1375.     
  1376.  
  1377.  
  1378. def colorCalType6(dev, loadpaper_ui):
  1379.     if loadpaper_ui():
  1380.         dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_COLOR_CAL)
  1381.         dev.closePML()
  1382.     
  1383.  
  1384.  
  1385. def colorCalType7(dev, loadpaper_ui):
  1386.     if loadpaper_ui():
  1387.         dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_AUTOMATIC_COLOR_CALIBRATION)
  1388.         dev.closePML()
  1389.     
  1390.  
  1391.  
  1392. def linefeedCalType1(dev, loadpaper_ui):
  1393.     if loadpaper_ui():
  1394.         dev.printData('\x1b%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n\x1bE\x1b%Puifp.multi_button_push 3;\nudw.quit;\x1b*rC\x1bE\x1b%-12345X')
  1395.         dev.closePrint()
  1396.     
  1397.  
  1398.  
  1399. def linefeedCalType2(dev, loadpaper_ui):
  1400.     if loadpaper_ui():
  1401.         dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_LINEFEED_CALIBRATION)
  1402.         dev.closePML()
  1403.     
  1404.  
  1405.  
  1406. def printQualityDiagType1(dev, loadpaper_ui):
  1407.     if loadpaper_ui():
  1408.         dev.printData('\x1b%-12345X@PJL ENTER LANGUAGE=PCL3GUI\n\x1bE\x1b%Puifp.multi_button_push 14;\nudw.quit;\x1b*rC\x1bE\x1b%-12345X')
  1409.         dev.closePrint()
  1410.     
  1411.  
  1412.  
  1413. def printQualityDiagType2(dev, loadpaper_ui):
  1414.     if loadpaper_ui():
  1415.         dev.setPML(pml.OID_PRINT_INTERNAL_PAGE, pml.PRINT_INTERNAL_PAGE_PRINT_QUALITY_DIAGNOSTIC)
  1416.         dev.closePML()
  1417.     
  1418.  
  1419.